Вариант открыть вашу музыку аудиоредакторе например FL Studio, уменьшить ее качество с 320 до 128, также буделт лучше урезать непосредственно композицию, например оставить только главную тему и все. И переодически проигрывать в игре только часть вырезаную часть музыкальной композиции.
Главный кошмар тут, конечно - 14 групп. Пришлось так делать, т. к. принципиально не хочу применять глобалки, а локалки, похоже, после дестройгруп заново не юзабельны.
Это вроде должно быть легко поправить, вместо
call DestroyGroup (firewayunits1)
везде ставь
call GroupClear(firewayunits1)
и в самом конце уже, где идет обнуление переменных, там оставляешь DestroyGroup.
И с чего такая нелюбовь к глобалкам? Хештаблица используется, а это ж тоже глобалка, причем даже не просто глобалка, а супер-глобалка. У меня с ней постоянно головная боль была, из-за возникающих после интенсивной работы странных глюков...
Достаточно посмотреть как устроены эти бж функции и все будет понятно.
function OnlyAliveSourcess takes nothing returns boolean // эту функция в кастом код карты, в самом вверху.
return GetUnitTypeId( GetFilterUnit( ) ) == 'hsor' and not ( GetWidgetLife( GetFilterUnit( ) ) < 0.405 or IsUnitType( GetFilterUnit( ), UNIT_TYPE_DEAD ) )
endfunction
//...
call GroupClear( udg_Group ) // это в кастом скрипт твоего триггера
call GroupEnumUnitsInRect( udg_Group, bj_mapInitialPlayableArea, Condition( function OnlyAliveSourcess )) // это в кастом скрипт твоего триггера
Вот без утечек и локейшинов и прочих ненужных действий.
Далее уже делай что хочешь с юнитами в группе
globals
player Pl = null
endglobals
function abc takes nothing returns boolean
return IsUnitEnemy(GetFilterUnit(), Pl)
endfunction
function zemle takes nothing returns nothing
local unit u = GetTriggerUnit()
local group g = CreateGroup()
local real x = GetUnitX(u)
local real y = GetUnitY(u)
local real Random = GetRandomReal(0, 360)
local boolexpr d = Condition(function abc)
set Pl = GetTriggerPlayer()
call GroupEnumUnitsInRange( g, x, y, 850, d )
call ForGroup( g, function zemlee )
call UnitApplyTimedLife(CreateUnit (p, 'h007',x,y,Random),'BFiq',0.50 ) // ???
call DestroyGroup(g)
call DestroyBoolexpr(d)
set u = null
set p = null
set g = null
set d =null
endfunction
Осуществляешь импорт по неправильному пути. Например (я пробовал для орков), "Sound\Music\mp3Music\Orc1.mp3", "Sound\Music\mp3Music\Orc2.mp3", "Sound\Music\mp3Music\Orc3.mp3", "Sound\Music\mp3Music\Orc1X.mp3" и т.д. Все стандартные треки были заменены на мой. Чтобы корректно заменять музыку на карте, нужно знать пути импорта. Путь к оригинальным трекам можно посмотреть в mpq-архиве через архиваторы.
Cпособ #1
Самый простой вариант, это найти и скачать WE Unlimited. Редактор хоть и стар как сам варкрафт. но у него есть так называемый Enchacer. Через данный Enchacer можно вытаскивать любые данные и даже манипулировать импорт и путями. Единственный недостаток, что запускается он не на всех ОС из-за требования каких-то dll которые являются интегрированными в XP, но за каким то чудом нет в остальных Windows, так что придется немного потанцевать с бубном, но потом ты сможешь хоть ландшафт из стандартной карты интегрировать.
Способ #2
MPQ архиватором вскрываешь архив карты и находишь данные о ландшафте и обо всем что на нем стоит. Ищешь или создаешь карту с нужным тебе ландшафтом, и затем интегрируешь все уже в свою карту.
Оба способа требуют манипуляций с файлами, зато позволяет эксплуатировать главную карту как бессмертное ядро, которому надо всего лишь менять внешнюю оболочку в лице ландшафта и декора.
Если по игроку то массив переменных по игроку, если прям каждого конкретного героя каждого игрока - то через custom value или прочий регистратор юнитов.
тому, что было в памяти на момент её выделения под переменную. Выделение памяти и её очистка - разные процессы, именно поэтому считается хорошим тоном задавать значения перед тем, как планируешь их использовать.
Ребята, я разобрался
Триггер работает нормально и безутечно, вся проблема в том, что создавая спелл-активатор с кислотной бомбы, я указал интервал урона = 0.00, что и повлекло все лаги
А теперь скажи: Ты добавлял модели обычным методом или подключаемым модулем?
Если первое, то да - будут отображаться. Если же второе, то надо скинуть модуль/архив
Да у тебя куча дыр, во-первых ты не запустил триггер 115 области lumber direction, и оно соответственно не реагирует на событие. Во-вторых перепроверь gold проверку условия на да или нет в той карте которую ты отправил стоит нет
А золото не движется потому что ты ожидание 0,5 сек поставил а область в милисекунде от изначальной то есть триггер не успевает запуститься
да, сейчас вообще обратил внимание что текстуры идущие в комплекте не воспринимаются почему-то, а именно "Shield.blp".
Все равно проблема не решилась, вроде бы смог заменить текстуру, которую не видел но варик не воспринимает модель.
1
Большинство абилок с баффами не складываются, сделай похищение жизни - на основе ауры вампиризма (если юнит мили) ну или сделай бонус урона на основе Рева друидов-медведей у ночных эльфов.
Складываются только стрелы яда\холода, яды (еще от настроек зависит), всякие предметные хилки на хп и мп (и то если в в настройках указанные разные баффы )
Так же не перебивают друг-друга баффы аур (на оной основе можно сделать хоть 100500 аур с разными баффами и все они будут висеть на юните давая бонусы, не перебивая друг-друга).
Нужно в способностях предмета цели настроить. xgm.guru/p/100/180041 Не помню точно в этом ли примере, там есть настройки клика на предмет. У меня компа просто нет уже =((
А в триггерах проверяешь условием - является ли предмет такой-то такой (в зависимости от события переменные разные, если то каст то цель каста, если то приказ, то цель приказа). то если обязательно нужно условие какое-то
возвращает то же значение Z, что было до деформации.
Вообще-то нет, иначе в Sniper Aren-у было бы невозможно играть.
Скорее всего ты создаёшь "временную" а не "постоянную" деформацию. По завершению постоянной деформации он выдаёт точные данные (деформация длится в течение времени, указанного в триггере)
Если надо делать деформацию на время, то лучше заносить точки в переменные и в нужный момент делать обратную деформацию, возвращающую первоначальное состояние.
Потому что огромный Нестандартные объекты может тысяч или больше или Спелл герой до 100 уровень.
из них 60 загрузка просто висит на 1/5.
Если нетак? Проверь если есть файлы war3map.j папка Game\WarcraftIII, надо удалить файл. очень давно тоже 1 раз что за вылет или неправильно выполняет триггер.
Есть способы ускорить загрузку карты не экономя в редакторе объектов
Есть Widgetizer, там очень быстрая загрузка игра, но плохо работает спелл или текст.
Было создано 22 366 679 экземпляров класса CUnitListNode, которые заняли 255.9 МБ памяти.
При очередной попытке выделения, игра упала.
Виной всему утечки памяти: за 21 минуту набралось 80 тысяч групп и 20 тысяч точек.
Также, из-за выполнения большого количества кода, сильно лагает.
На стадии выбора героя (первые две минуты), выполняется 550 000 операций в секунду, а далее — 1 200 000.
Для сравнения: лимит потока — 300 000 операций.
Хорошо, что ты приложил карту, так как в логе маловато информации.
ScopteRectuS, ну как я и догадывался, что идет рекурсия.
10 событий - юнит получает урон, на одного юнита... Нужны именно такого типа проверки, всегда в условии триггера проверяй от кого урон и какой этот урон с помощью флага глобалки как в примере.В блоге лича хорошо описаны костыли доты, почитай для общего развития чтобы не наступать на эти грабли еще раз.
Интересно мне, у каких героев ты нашёл эту способность, не имеющуюся в списке способностей, но присутствующую в игре? Прямо очень интересно.
Добавить можно так же как и любую другую способность. Называется она - Повышение Характеристик.
в чем редактор вкв3 отличается от редактора ск2 - к сожалению, в вк3-шном эдиторе не удастся отловить все данные.
если ты скажешь, что конкретно делает твой спелл, тебе могут подсказать более легкий вариант исполнения
насчет спецэффектов - утечка решается просто
создаешь точку, если спец на земле. если спец на юните, точка не требуется.
собсно воспроизводишь спец
и сразу его удаляешь. спец удалится тогда, когда доиграет до конца его анимация
кастом скриптом удаляешь точку, если 1 часть 1 пункта актуальна
Ну как как, морфнуть героя в другого героя, у которого будет эта способность.
Увы добавить способность в HeloList низя, так что юзаем обходные пути с морфами и техникой.
Я постоянно порываюсь весь вар снести и изучение джасса, которое отнимат
Посмотрел твоя карта, ужасный триггер, тройная нагрузка, и Одинаково события! поэтому мы объединение триггер и сократилось нагрузка и чуть меньше килобайт весит карт.
Я сделал полностью оптимизация ГУИ вместо джасс.
Как вам карта?
почему гуи+джасс? Потому что кто не включает UMSWE или русификатор триггеров, различные проблем. Rare, что решает проблем?
Попробуй отключить триггеры, для начала, и затем проверь, запустится ли карта в игре. Особенно те, которые были созданы/редактированы относительно недавно до появления фатала.
Умирающий юнит, в том понятии, в каком его жуёт игра, не имеет баффов.
Вместо "Умирает" отлавливай поулчение смертельного удара (событие юнит получает урон).
Если полученный урон > оставшегося здоровья - то сделать всё то, что у тебя для умирающего
А касательно остальной части, если UnitUserData нигде не используется, создаешь массив юнитов и отрядов. Массив юнитов забиваешь своими капитанами. В UnitUserData капитана пихаешь его порядковый номер в массиве. Создаешь группу юнитов для этого капитана.
Добавление через каст способности.
Я бы делал через 2 разные абилки с одной и той же позицией в интерфейсе. Пока нужный тебе юнит не является частью отряда - у него таргетная абилка при касте которой на капитана он добавляется в группу соответствующего капитана и получает 2ю абилку взамен первой.
Касательно выделения этих пехотинцев - можно намутить что-то с передачей контроля или создать триггер, который будет снимать выделение с юнитов у которых есть 2я абилка. Если ты хочешь чтобы по одиночке можно было выделять пехотинцев - можешь создать переменную для каждого игрока с капитанами, куда будет просто записываться последний выбранный юнит. При снятии выделения - проверять не выбран ли этот же юнит, в случае чего не снимать выделение. Правда не уверен будет ли корректно работать :> В крайнем случае - будет работать в три клика вместо двух. Если я не ошибаюсь.
Касательно поведения этих пехотинцев - что-то реально стоящее сделать сложно. Возможно, но мне не с руки все расписывать :> Простейший вариант - приказывать пехотинцам после добавления в группу следовать за капитаном.
Добавление через атаку капитана
Триггер, проверяющий что капитан получил урон или атакован, как угодно. Далее любым способом проверяешь есть ли в группе этого капитана юниты. Если нет - выбираешь всех пехотинцев N радиусе, добавляешь в отряд, заменяешь абилку/либо просто приказываешь кастануть в капитана первую абилку.
Melissa:
на твоей мапе все работает о_о
вата фак....
в первой версии селектора событие выделения было только у игрока 1, как у тебя
получается, если впихнуть событий выделения на игрока больше одного, они перестают работать?
Nero-PC, если подготовка только началась то юнита ещё нету
он появится лишь по окончанию подготовки
тебе надо смотреть не юнит а тип юнита
там есть реакция на событие - подготавливаемый тип юнита
или чтото подобное
на джасс это будет
Я так и сделал, не получалось потому, что надо два заклинания делать....
Один буферизуется другой нет... Еще один вопрос по теме, что значит буферизуется\не буферизуется? И можно тему закрывать.
Если во всех картах одинаковый id, значит покопайся в хеше.
Это как, можно в личку?
Проблему решил, переделав стандартную способность, а не создавая нестандартную. Это почти что панацея от подобных случаев, когда id (ещё называют raw-code) способности меняется.
Никто доподлинно не знает что Вы делали в своей карте, кроме Вас. После чего это началось? Пока могу только порекомендовать отключить все триггеры в карте — если баг пропадет, значит поочередно включайте триггеры и ищите, какой из них вызывает баг. Если не пропадет, значит причина не в триггерах.
тогда всё ясно карта не полностью скачивается
у меня работает всё
это проблема у тех кто качает карту(диск С забит,браузер тупит или ещё какая нить фигня)
решается либо уменьшением веса карты либо пусть качают через варик
» WarCraft 3 / Анимация Stand hit
» WarCraft 3 / По сжатию карт
» WarCraft 3 / DestroyGroup()
» WarCraft 3 / Импорт звука
» WarCraft 3 / Помощь с заданием
» WarCraft 3 / Помощь в создании тригера
» WarCraft 3 / Вопрос о 2-ной модели.
» WarCraft 3 / Карты с красивым ландшафтом ?
» WarCraft 3 / Проблема с выдачей награды
» WarCraft 3 / Вопрос по кампании и модели
» WarCraft 3 / Движение героя стрелками.
» WarCraft 3 / Что не так?
» WarCraft 3 / Использование предмета на предмет
» WarCraft 3 / Высота Z
» WarCraft 3 / как сделать из обычного юнита героя
» WarCraft 3 / Фаталит карта
» WarCraft 3 / Как добавить способность герою?
» WarCraft 3 / Карта вылетает :(
» WarCraft 3 / 1 юнит = отряд
» WarCraft 3 / В чем ошибка?
» WarCraft 3 / Иконки способностей для предметов
» WarCraft 3 / Вылетает вар.
» WarCraft 3 / Игровой чат